#ifndef _MODEL_CONTROLLER_H_
#define _MODEL_CONTROLLER_H_

#include <pcl/point_cloud.h>
#include <pcl/point_types.h>

#define MIN_DISTANCE 0.2
#define MAX_DISTANCE 1.0

class ModelController
{
   public:
      ModelController();
      virtual ~ModelController();

      virtual int init();
      virtual int shutDown();
      virtual int generateModel();

      virtual int getModel(pcl::PointCloud<pcl::PointXYZRGB>::Ptr& _model);

      virtual int useImages(unsigned char* _rgb, unsigned short* _depth, unsigned int _degree);
      virtual int usePlyFile(const char* _file_name);

   private:
      pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;
};

#endif